<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /* let 变量    
           const 常量
            没有预解析  
            必须先声明后使用  
        */
        // 预解析   var支持预解析
        // console.log(num);//undefined
        // var num = 100;
        // console.log(num); // 100 
        // let const 不支持 
        // console.log(num); //报错 let 必须先声明后使用
        // let num = 100;
        // console.log(num);

        // 重名 

        // var n1 = 100;
        // var n1 = 500;

        // // console.log(n1) 允许重名 后边会把前面替换掉
        // let n1 = 100;
        // let n1 = 1000;
        // // console.log(n1)  // let 不允许重名 
        // const n1 = 100;
        // const n1 = 1000;
        // console.log(n1) // const 也不允许重名


        // 块级作用域 

        // if(true){
        //     var num =100;
        //     console.log(num);
        // }
        // console.log('我是全局',num)

        // for(var i=0;i<3;i++){
        //     var num1 = 666;
        // }
        // console.log('我是全局',num1)
        // var 只有函数 才有作用域 其它都是全局 


        // if(true){
        //     let num =100;
        //     console.log(num);
        // }
        // console.log('我是全局',num)

        // for(var i=0;i<3;i++){
        //     let num1 = 666;
        // }
        // console.log('我是全局',num1)


        // 对于let 和const 来说 任何 {} 都是局部作用域  
        // 外边不能直接用 {}中 let声明的变量  

        //  for(let i=0;i<3;i++){
        //  }
        // console.log('循环结束',i) // 如果var i=0 结果是3  let i=0 这里报错 

        

        // let num1 = 100;
        // num1 = 999;

        // alert(num1);

        // const pi = 3.1415926;

        // pi = 1.23;  // 常量常量 不变的量 也就是不能修改  
        // alert(pi)


        // let num;
        // alert(num); // undefined  只声明 不赋值  

        // const num;
        // alert(num);

    </script>
</body>
</html>